import { setToken } from '@/utils/auth'
import store from '@/store'
import router from '@/router'
import { getInfo } from './api'

// 过程分类
export const processTypeList = [
  { label: '总体', value: '' },
  { label: '土建过程', value: 'civil' },
  { label: '精装过程', value: 'handcover' },
  { label: '管理动作', value: 'gldz' }
]
// 过程分类值常量
export const PROCESS_TYPE = {
  overall: '',
  civil: 'civil',
  handcover: 'handcover',
  gldz: 'gldz'
}

// 检查单位
export const rdcTypeList = [
  { label: '全部检查', value: '' },
  { label: '集团检查', value: 'DEPT1' },
  { label: '集群检查', value: 'DEPT2' }
]

// 获取用户信息
export const getUserInfo = async token => {
  const res = await getInfo(token, { 401: '登录状态已过期' })

  const user = res.user
  const avatar = user.avatar === '' ? require('@/assets/image/profile.jpg') : process.env.VUE_APP_BASE_API + user.avatar

  if (res.roles?.length) {
    // 验证返回的roles是否是一个非空数组
    store.commit('SET_ROLES', res.roles)
    store.commit('SET_PERMISSIONS', res.permissions)
  } else {
    store.commit('SET_ROLES', ['ROLE_DEFAULT'])
  }

  store.commit('SET_NAME', user.userName)
  store.commit('SET_AVATAR', avatar)
  store.commit('SET_USER', user)

  return res
}

// 处理登录状态
export const handleToken = async token => {
  if (token) {
    // 保存到 cookie 和 store
    setToken(token)
    store.commit('SET_TOKEN', token)
  }

  if (store.getters.roles?.length) return true

  // 获取用户信息
  const res = await getUserInfo(token).catch(() => false)
  if (res !== false) return true

  // PC 尺寸下重定向到登录界面
  if (document?.body?.clientWidth >= 768) {
    await store.dispatch('FedLogOut')
    router.replace({ path: '/login', query: { redirect: '/projectDashboard' } })
  }
  return false
}

// 过程检查项。土建和精装一样
export const scoreType2label = {
  fsl: '防渗漏',
  zl: '质量',
  aq: '安全',
  wm: '文明',
  gldz: '管理动作'
}
